break;
+ case MSR_K8_MC4_MISC: /* Threshold register */
+ /*
+ * MCA/MCE: Threshold register is reported to be locked, so we ignore
+ * all write accesses. This behaviour matches real HW, so guests should
+ * have no problem with this.
+ */
+ break;
+
default:
return 0;
}
msr_content = v->arch.hvm_svm.cpu_shadow_efer;
break;
+ case MSR_K8_MC4_MISC: /* Threshold register */
+ /*
+ * MCA/MCE: We report that the threshold register is unavailable
+ * for OS use (locked by the BIOS).
+ */
+ msr_content = 1ULL << 61; /* MC4_MISC.Locked */
+ break;
+
default:
if ( rdmsr_hypervisor_regs(ecx, &eax, &edx) ||
rdmsr_safe(ecx, eax, edx) == 0 )
#define MSR_IA32_MC0_ADDR 0x402
#define MSR_IA32_MC0_MISC 0x403
+/* K8 Machine Check MSRs */
+#define MSR_K8_MC1_CTL 0x404
+#define MSR_K8_MC1_STATUS 0x405
+#define MSR_K8_MC1_ADDR 0x406
+#define MSR_K8_MC1_MISC 0x407
+
+#define MSR_K8_MC2_CTL 0x408
+#define MSR_K8_MC2_STATUS 0x409
+#define MSR_K8_MC2_ADDR 0x40A
+#define MSR_K8_MC2_MISC 0x40B
+
+#define MSR_K8_MC3_CTL 0x40C
+#define MSR_K8_MC3_STATUS 0x40D
+#define MSR_K8_MC3_ADDR 0x40E
+#define MSR_K8_MC3_MISC 0x40F
+
+#define MSR_K8_MC4_CTL 0x410
+#define MSR_K8_MC4_STATUS 0x411
+#define MSR_K8_MC4_ADDR 0x412
+#define MSR_K8_MC4_MISC 0x413
+
/* Pentium IV performance counter MSRs */
#define MSR_P4_BPU_PERFCTR0 0x300
#define MSR_P4_BPU_PERFCTR1 0x301